width 百分比取值基准

width 百分比取值相对基准问题

一 :标准流下,父元素不定位,不浮动,子元素的100% width相对于哪个元素的width进行取值

二:脱离标准流之后,父元素设置了定位或者浮动之后,子元素的100% width相对于哪个元素的width进行取值

注意理解:

  • 子元素标准流的元素的时候,(包括子元素设置position:relative,也是永远相对于父元素的宽高为基准)

    无论父元素是否是标准流 的元素,子元素的width和height的百分比取值永远都是相对于父元素的;

此时无论父元素是否设置定位,子元素的width height padding margin 通过百分数取值的时候,都是相对于其直接父元素

  • 子元素不是标准流的时候,比如子元素设置了position:absolute;

    此时子元素的宽高百分比设置的时候,百分比的宽高基准是顺着DOM元素往上寻找最近的一个设置了定位了父元素的宽高为基准,如果祖先元素都没有定位的话,那么就是相对于body的宽高;注意position除了static的父元素 ;

    注意position除了static的父元素

  • 其实绝对定位的子元素的 margin padding 等值的百分比都是相对于顺着DOM节点树向上第一个设置了除了static定位之外的position 的元素的宽度为基准的;

  • % 重点理解:width 是 基于父元素的 width 计算的值
    height 是基于父元素的 height 计算的值
    padding 和 margin 的无论上下左右 值 都是基于DOM树节点祖先元素中第一个设置了除了static定位之外的第一个祖先元素的宽度